Building scalable client-server based applications has increased in importance recently with the increase in the use of the Internet as a mechanism to connect potential users of data, data sources, and processing resources with these various data sources and processing resources. These applications that previously were required to scale to a potential of 100 or more simultaneous users are now potentially exposed to millions of simultaneous users of the Internet. To effectively build these applications, multi-tiered application architectures that are implemented using a multi-tiered processing architecture have been developed to provide the needed level of scalability.
In prior implementations of these applications, a client manipulating a database is directly connected to the database and maintains that connection during manipulation of the data. This type of architecture allows for easy data synchronization between the client and the database. However, this type of computer architecture places limits on the number of clients that might work with the database at any one time; or in other words, this architecture is not scalable. In other data structure architectures, a multi-tier architecture, such as a three-tier architecture, is used. The client comprises the first tier. The second tier includes servers that contain the business logic that may be easily replicated or scaled to meet the needs of the number of simultaneous users of the system. The third tier contains the one or more database connected to the second tier processors.
In the multi-tier architecture, the client makes a request to the second tier for data. A server in the second tier pulls the data from the database located within the third tier and sends a snapshot of the data to the client. The client can make changes to the data, such as update the data, add data, or delete data. The changes are sent back to the second tier. Upon return of the data from the client, the client request may or may not be routed to the same server that sent the data to the client originally. Each processing request from the client to the server/database is separately routed to an appropriate server within the second tier of the architecture based upon any number of factors related to the current processing loads and operating environments of the servers when the request is made.
Because of the fact that data sent between a client and a database may be routed through different processing servers, a stateless organization of data objects is needed. In such objects, each processing operation does not depend upon the processing module performing an operation to know what has occurred in prior operations that may have been performed. As a result, each request may be handled by any server on a request by request basis.
Programming the interaction of the various levels of a multi-tiered architecture for these applications using a stateless data object design presents a number of programming problems that ensure that each level of the architecture is operating upon a consistent implementation of the data model. The present invention provides a method, system, and article of manufacturer for constructing a consistent implementation of a stateless data object that is implemented across all of the processing levels in a multi-tiered processing architecture.